from pandas.core.computation import scope
import pytest

from common.case import read_cases, send_request, check
from common.db import DB

cases = read_cases('login.xlsx', ['用例编号', '用例说明', '接口路径', '请求方法', '请求类型', '参数', '预期结果'])


@pytest.fixture(scope='module', autouse=True)
def init():  # 测试固件：实现数据库初始化
    DB().init_db('login.sql')


@pytest.mark.parametrize('case_info, url, method, request_type, args, expect', cases)  # 参数化，执行大量手工用例
def test_login(case_info, url, method, request_type, args, expect):  # 升级为pytest测试用例
    res_type, actual = send_request(url, method, request_type, args)
    passed, msg = check(case_info, res_type, actual, expect)
    assert passed, msg  # 如果passed是True，则断言成功，如果是False，则断言失败


if __name__ == '__main__':
    pytest.main(['--tb=no', '--html=../report/login.html',
                 '--log-format=%(asctime)s [%(levelname)s] %(message)s [%(filename)s:%(lineno)s]'
                    , '--log-date-format=%Y-%m-%d %H:%M:%S', 'login.py'])
